package com.whoru.app;

import java.util.ArrayList;

import com.whoru.beans.Globals;
import com.whoru.beans.Notification;
import com.whoru.logica.AdapterNotificaciones;
import com.whoru.logica.WebServices;

import android.app.AlertDialog;
import android.app.ListActivity;
import android.content.Context;
import android.content.DialogInterface;
import android.os.Bundle;
import android.view.View;
import android.widget.ListView;

public class Notificaciones extends ListActivity {

	WebServices ws = new WebServices();
	ArrayList<Notification> n ;
	Context ctx;

	private ArrayList<String> nota; //lista de notas de notificaciones, para rellenar el listview
	private String[] nota_array;
    private AdapterNotificaciones listAdapter;
	
			
		/** Se le llamara la 1 vez que se cree la actividad, y lo que hara sera recargar 
		 *  el array de notas que se visualizara en la lista y llamara actulizar para mostrarlo */
		public void onCreate(Bundle icicle) {
			super.onCreate(icicle);				
	
			Globals appState = ((Globals)getApplicationContext());
			n = appState.getNotificaciones(); 			

			nota_array = new String[n.size()];

			for (int i=0;i<n.size();i++){
				
				nota_array[i]=n.get(i).getNota();
				
			}	
			actualizar();
		}
		
		/** Se le llamara despues de la 1 vez que se cree la actividad, y lo que hara sera recargar 
		 *  el array de notas que se visualizara en la lista y llamara a actualizar para mostrarlo  */
		public void onResume() {
		        super.onResume();
		        Globals appState = ((Globals)getApplicationContext());
				n = appState.getNotificaciones(); 			

				nota_array = new String[n.size()];

				for (int i=0;i<n.size();i++){
					
					nota_array[i]=n.get(i).getNota();
					
				}	
		        actualizar();       
		 }
		
		/** Creara el arraylist de string necesarios para mostrarlo en pantalla y le dara un estilo
		 *  gracias al MyArrayAdapterNoti, es decir le dara su adaptador y lo seteara  */

		public void actualizar(){
			 
			 nota = new ArrayList<String>();
		        for(int i = 0 ; i < nota_array.length ; i++){
		            nota.add(nota_array[i]);
		        }
		        
		        listAdapter = new AdapterNotificaciones(Notificaciones.this, nota);	        
		        
		        if (nota.size()==0){
		        	setListAdapter(listAdapter);

		    	}
		    	else{
		    		setListAdapter(listAdapter);		    	
		    	}		        
		       
		 }
		
		/** Metodo que se ejecutara siempre que la lista se clickada, en el caso de que esta
		 *  acabe por amigo, se le dara la opcion de aceptar o no la peticion */
	  
		protected void onListItemClick(ListView l, View v, final int position, long id) {
				super.onListItemClick(l, v, position, id);				
				
				Object o = getListAdapter().getItem(position);
				String nombre = o.toString();	
				
				final Globals appState = ((Globals)getApplicationContext());
				final ArrayList<Notification> n = appState.getNotificaciones();  
				
				if (nombre.endsWith("amigo")){					
					new AlertDialog.Builder(this)
					   .setTitle("Quieres aceptar la peticion de amistad")
					   .setMessage(""+n.get(position).getSms())
					   .setPositiveButton("Si",
					     new DialogInterface.OnClickListener() {
					      public void onClick(DialogInterface dialog, int id) {					    	  
					    	 ws.setAprove(n.get(position).getRequestee_id(),
					    			 n.get(position).getRequester_id(),
					    			 n.get(position).getRid());					    					    	 
				             n.get(position).setApproved("1");
				             n.get(position).setNota("Amistad aceptada con "+
				            		 ws.getNombreUsuario(n.get(position).getRequester_id()));	
				             onResume();
					      }}
					     )
					   .setNegativeButton("No",
					     new DialogInterface.OnClickListener() {
					      public void onClick(DialogInterface dialog, int id) {		    	  
					    	  
					    	  ws.cancelAmi(n.get(position).getRid());
					    	  n.remove(position);	
					    	  onResume();
					      }}
					     ).show();
				}
				
		 }

}